/**
 * Copyright (c) 2013 An Yaming,  All Rights Reserved
 */
package so.shanku.essential.getdata;

import aym.util.getservicesdata.GetServicesDataQueue;
import aym.util.getservicesdata.GetServicesDataUtil;
import aym.util.json.JsonMapOrListJsonMap2JsonUtil;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;


/**
 * 队列中已经设定ip 和是否使用get方式
 * 
 * @author 亚明
 * 
 */
public class GetDataQueue extends GetServicesDataQueue {
	/**
	 * 调用时要传入的key
	 */
	public static final String Params_key = "Params_key";

	/**
	 * 已经定义get ip信息的获取服务器数据的队列 get ip信息无需设定
	 * 
	 * @author 亚明
	 * 
	 */
	public GetDataQueue() {
		super();
		super.setIp(GetDataConfing.ip);
		super.setGet(false);
	}

	/**
	 * 已经 定义get ip信息的获取服务器数据的队列get ip信息无需设定
	 * 
	 * @author 亚明
	 * 
	 */
	public GetDataQueue(int what, Object tag, String actionName,
			Map<String, String> params, GetServicesDataUtil.IGetServicesDataCallBack callBack) {
		super(what, tag, false, GetDataConfing.ip, actionName, params, callBack);
	}

	/**
	 * 重写父类的获取信息的方法 当含有&lt;string> &lt;/string>时去掉前后的&lt;string> &lt;/string>
	 */
	@Override
	public String getInfo() {
		String info = super.getInfo();
		if (null != info) {
			if (info.startsWith("<?xml")) {
				info = info.substring(info.indexOf(">") + 1);
				info = info.trim();
				if (info.startsWith("<string")) {
					info = info.substring(info.indexOf(">") + 1);
					info = info.trim();
					if (info.endsWith("</string>")) {
						info = info.substring(0, info.length() - 9);
					}
				}
			}
		}
		return info;
	}

	/**
	 * 由于次项目传入参数时 使用setParamsNoJson<br/>
	 * 如果没有传入Params_key信息 这将所有的参数调用toString使用setParams进行调用
	 * 
	 * @param params
	 *            例如本来是userInfo={UserAccount:"",Password:""}<br/>
	 *            现在只需传入 Params_key=userInfo, UserAccount="", Password=""
	 *            参数可传入Map<K, V> List<? extends Map<K, V>>
	 */
	public void setParamsNoJson(Map<String, Object> params) {
		String s = (String) params.get(Params_key);
		Map<String, String> params2 = new HashMap<String, String>();
		if ("".equals(s) || "null".equals(s)) {
			Set<String> sps = params.keySet();
			for (String string : sps) {
				params2.put(string, (String) params.get(string));
			}
		} else {
			Map<String, Object> params3 = new HashMap<String, Object>();
			params3.putAll(params);
			params3.remove(Params_key);
			params2.put(s, new JsonMapOrListJsonMap2JsonUtil<String, Object>()
					.map2Json(params3));
		}
		super.setParams(params2);
	}

	/**
	 * 由于次项目传入参数时 需要传入json数据故不要使用此方法 请使用setParamsNoJson
	 */
	@Override
	public void setParams(Map<String, String> params) {
		super.setParams(params);
	}

}
